<?php
 	
require_once($ruta_raiz."JBPM/MODEL/Connection/Connection.php");
require_once($ruta_raiz."JBPM/MODEL/Connection/ConnectionException.php");
require_once("INotificacionesDAO.php"); 	

class NotificacionesDAO implements INotificacionesDAO {
	private $db;
	public function NotificacionesDAO(){
		$this->db=Connection::getCurrentInstance();
	}
	public function crearNotificacion($notificacion){
		$consulta="INSERT INTO SGD_NTRD_NOTIFRAD (RADI_NUME_RADI,SGD_NOT_CODI,SGD_NTRD_NOTIFICADOR,
		           SGD_NTRD_NOTIFICADO,SGD_NTRD_FECHA_NOT,SGD_NTRD_OBSERVACIONES) VALUES(
		           {$notificacion->getNumRadicado()},'{$notificacion->getNotificador()}',".
		           $db->conn->OffsetDate(0,$db->conn->sysTimeStamp).",'{$notificacion->observavciones()}')";
		if(!($this->db->query($consulta)))
			throw new ConnectionException("no se pudo Crear la notificacion favor intente de nuevo");
		$consulta="SELECT MAX(SGD_NTRD_FECHA_NOT) FROM SGD_NTRD_NOTIFRAD WHERE RADI_NUME_RADI={
		$notificacion->getNumRadicado()}";
		$rs=$this->db->query($consulta);
		$salida=(!$rs->EOF)?$rs->fields['SGD_NTRD_FECHA_NOT']:date("Y-m-d");	
			
	}
	public function CrearEdicto($edicto){
		$this->db->conn->BeginTrans();
		$fechaEdicto=$this->crearNotificacion($edicto);
		$consulta="UPDATE SGD_NTRD_NOTIFRAD SET SGD_NTRD_NUM_EDICTO={$edicto->gerNumEdicto}, 
	                     SGD_NTRD_FECHA_FIJA= ".$this->db->conn->DBDate($edicto->getFechaFijacion).", 
						 SGD_NTRD_FECHA_DESFIJA =".$this->db->conn->DBDate($edicto->getFechaDesfijacion)."
						 WHERE SGD_NTRD_FECHA_NOT >=".$this->db->conn->DBDate($fechaEdicto);
		if(!($this->db->query($consulta))){
			$this->db->conn->RollBackTrans();
			throw new ConnectionException("No se pudo crear el edicto ");
		}else{
			$this->db->conn->CommitTrans();
		}
	}
	public function cargarEdicto($numRadicado){
		$salida=array();
		$consulta="SELECT SGD_NOT_CODI,SGD_NTRD_NOTIFICADOR,SGD_NTRD_NOTIFICADO,SGD_NTRD_FECHA_NOT,
						 SGD_NTRD_OBSERVACIONES,SGD_NTRD_FECHA_FIJA,
						 SGD_NTRD_FECHA_DESFIJA FROM SGD_NTRD_NOTIFRAD,SGD_NTRD_NUM_EDICTO
					WHERE RADI_NUME_RADI = {$numRadicado}  ORDER BY SGD_NTRD_FECHA_NOT";
		$i=0;
		while ($rs && !$rs->EOF){
		  	$edicto=new Edicto();
		  	$edicto->setRadicado($numRadicado);
		  	$edicto->setNotificador($rs->fields['SGD_NTRD_NOTIFICADOR']);
		  	$edicto->setFechaNotificacion($rs->fields['SGD_NTRD_FECHA_NOT']);
		  	$edicto->setNumEdicto($rs->fields['SGD_NTRD_NUM_EDICTO']);
		  	$edicto->setObservaciones($rs->fields['SGD_NTRD_OBSERVACIONES']);
		  	$edicto->setFechaFijacion($rs->fields['SGD_NTRD_FECHA_FIJA']);
		  	$edicto->setFechaDesfijado($rs->fields['SGD_NTRD_FECHA_DESFIJA']);
			$salida[$i]=$edicto;
		}
	return $salida;
	}
	public function cargarNotificacion($numRadicado){
		$salida=array();
		$consulta="SELECT SGD_NOT_CODI,SGD_NTRD_NOTIFICADOR,SGD_NTRD_NOTIFICADO,SGD_NTRD_FECHA_NOT,
						 SGD_NTRD_OBSERVACIONES
					WHERE RADI_NUME_RADI = {$numRadicado} ORDER BY SGD_NTRD_FECHA_NOT ";
		$i=0;
		while ($rs && !$rs->EOF){
		  	$notificacion=new NotificacionPersonal();
		  	$edicto->setRadicado($numRadicado);
		  	$edicto->setNotificador($rs->fields['SGD_NTRD_NOTIFICADOR']);
		  	$edicto->setFechaNotificacion($rs->fields['SGD_NTRD_FECHA_NOT']);
		  	$edicto->setObservaciones($rs->fields['SGD_NTRD_OBSERVACIONES']);
		  	$salida[$i]=$notificacion;
		}
	return $salida;
	}
}